Virtualization is a technology that allows one computer to do the job of multiple computers by sharing resources of a single computer across multiple systems. Through the use of virtualization, multiple operating systems and applications can run on the same computer at the same time, thereby increasing utilization and flexibility of hardware. Virtualization allows servers to be decoupled from underlying hardware, thus resulting in multiple virtual machines sharing the same physical server hardware. The virtual machines may move between servers based on traffic patterns, hardware resources, or other criteria. Migrating a VM may require the transfer of the VM image itself, which can be quite time consuming. The speed and capacity of today's servers allow for a large number of virtual machines on each server, and in large data centers there may also be a large number of servers.
In the context of information technology, cloud computing is a model of service delivery (e.g., instead of a product) for providing on-demand access to shared computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, virtual appliances, and services) that can be provisioned with very little management effort or interaction with a provider of the service. In some instances, cloud infrastructure (“cloud”) may be deployed as a public, private or hybrid cloud. By way of example, in a private cloud, the cloud infrastructure is operated solely for an entity, and may be managed by the entity (or third party). In a public cloud, the cloud infrastructure may be made available to the general public (or another large set of users) and is operated by an entity providing cloud services. In a hybrid cloud, the cloud infrastructure includes at least two clouds (e.g., private and/or public) that are separate but connected by technology that enables data and/or application interoperability.